package com.netcracker.training.automonic.dao.entities;

import java.util.List;

/**
 * Statistics types describe substances of statistics.
 *
 * @author Vadim Gidulyan
 * 
 * @see Statistics
 */

public interface StatsType
{

	/**
	 * Returns statistics type id.
	 * 
	 * @return statistics type id
	 */
	int getId();
	
	/**
	 * Returns code of statistics type.
	 * 
	 * @return code of statistics type
	 */
	String getCode();
	
	/**
	 * Sets the code of the statistics type. The code must be unique.
	 * 
	 * @param code new code of the statistics type
	 */
	void setCode(String code);
	
	/**
	 * Returns name of statistics type. Name is used to display user interface.
	 * 
	 * @return name of statistics type
	 */
	String getName();
	
	/**
	 * Sets the name of the statistics type. Name is used to display user 
	 * interface.
	 * 
	 * @param name new name of the statistics type
	 */
	void setName(String name);
	
	/**
	 * Returns list of objects that have statistics of this type.
	 * 
	 * @return list of objects that have statistics of this type
	 */
	List<Object> getObjects();
	
	/**
	 * Returns list of statistics of this type.
	 * 
	 * @return list of statistics of this type
	 */
	List<Statistics> getStatistics();
	
	/**
	 * Saves object to database.
	 */
	void save();

}
